# Rules common to all arm targets
#
# Copyright (C) 2004-2015 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

TM_H += $(srcdir)/config/arm/arm-cores.def
OPTIONS_H_EXTRA += $(srcdir)/config/arm/arm-cores.def

# All md files - except for arm.md.
# This list should be kept in alphabetical order and updated whenever an md
# file is added or removed.
MD_INCLUDES=	$(srcdir)/config/arm/arm1020e.md \
		$(srcdir)/config/arm/arm1026ejs.md \
		$(srcdir)/config/arm/arm1136jfs.md \
		$(srcdir)/config/arm/arm926ejs.md \
		$(srcdir)/config/arm/arm-fixed.md \
		$(srcdir)/config/arm/arm-generic.md \
		$(srcdir)/config/arm/arm-tune.md \
		$(srcdir)/config/arm/constraints.md \
		$(srcdir)/config/arm/cortex-a15.md \
		$(srcdir)/config/arm/cortex-a5.md \
		$(srcdir)/config/arm/cortex-a7.md \
		$(srcdir)/config/arm/cortex-a8.md \
		$(srcdir)/config/arm/cortex-a8-neon.md \
		$(srcdir)/config/arm/cortex-a9.md \
		$(srcdir)/config/arm/cortex-a9-neon.md \
		$(srcdir)/config/arm/cortex-a53.md \
		$(srcdir)/config/arm/xgene1.md \
		$(srcdir)/config/arm/cortex-m4-fpu.md \
		$(srcdir)/config/arm/cortex-m4.md \
		$(srcdir)/config/arm/cortex-r4f.md \
		$(srcdir)/config/arm/cortex-r4.md \
		$(srcdir)/config/arm/fa526.md \
		$(srcdir)/config/arm/fa606te.md \
		$(srcdir)/config/arm/fa626te.md \
		$(srcdir)/config/arm/fa726te.md \
		$(srcdir)/config/arm/fmp626.md \
		$(srcdir)/config/arm/iterators.md \
		$(srcdir)/config/arm/iwmmxt.md \
		$(srcdir)/config/arm/iwmmxt2.md \
		$(srcdir)/config/arm/ldmstm.md \
		$(srcdir)/config/arm/ldrdstrd.md \
		$(srcdir)/config/arm/marvell-f-iwmmxt.md \
		$(srcdir)/config/arm/neon.md \
		$(srcdir)/config/arm/predicates.md \
		$(srcdir)/config/arm/sync.md \
		$(srcdir)/config/arm/thumb2.md \
		$(srcdir)/config/arm/vec-common.md \
		$(srcdir)/config/arm/vfp11.md \
		$(srcdir)/config/arm/vfp.md

s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \
	s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES)

$(srcdir)/config/arm/arm-tune.md: $(srcdir)/config/arm/gentune.sh \
	$(srcdir)/config/arm/arm-cores.def
	$(SHELL) $(srcdir)/config/arm/gentune.sh \
		$(srcdir)/config/arm/arm-cores.def > \
		$(srcdir)/config/arm/arm-tune.md

$(srcdir)/config/arm/arm-tables.opt: $(srcdir)/config/arm/genopt.sh \
  $(srcdir)/config/arm/arm-cores.def $(srcdir)/config/arm/arm-arches.def \
  $(srcdir)/config/arm/arm-fpus.def
	$(SHELL) $(srcdir)/config/arm/genopt.sh $(srcdir)/config/arm > \
		$(srcdir)/config/arm/arm-tables.opt

aarch-common.o: $(srcdir)/config/arm/aarch-common.c $(CONFIG_H) $(SYSTEM_H) \
    coretypes.h $(TM_H) $(TM_P_H) $(RTL_H) $(TREE_H) output.h $(C_COMMON_H)
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
		$(srcdir)/config/arm/aarch-common.c

arm.o: $(srcdir)/config/arm/arm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
  $(RTL_H) $(TREE_H) $(HASH_TABLE_H) $(OBSTACK_H) $(REGS_H) hard-reg-set.h \
  insn-config.h conditions.h output.h dumpfile.h \
  $(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
  $(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \
  $(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \
  $(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \
  intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) sched-int.h \
  $(srcdir)/config/arm/arm-cores.def \
  $(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def \
  $(srcdir)/config/arm/arm-protos.h \
  $(srcdir)/config/arm/arm_neon_builtins.def

arm-builtins.o: $(srcdir)/config/arm/arm-builtins.c $(CONFIG_H) \
  $(SYSTEM_H) coretypes.h $(TM_H) \
  $(RTL_H) $(TREE_H) expr.h $(TM_P_H) $(RECOG_H) langhooks.h \
  $(DIAGNOSTIC_CORE_H) $(OPTABS_H) \
  $(srcdir)/config/arm/arm-protos.h \
  $(srcdir)/config/arm/arm_neon_builtins.def \
  $(srcdir)/config/arm/arm-simd-builtin-types.def
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
		$(srcdir)/config/arm/arm-builtins.c

arm-c.o: $(srcdir)/config/arm/arm-c.c $(CONFIG_H) $(SYSTEM_H) \
    coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H)
	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
		$(srcdir)/config/arm/arm-c.c
